Currency trading system, methods, and software

ABSTRACT

In one aspect, the present invention comprises a system for trading currencies over a computer network. A preferred embodiment comprises: (a) a server front-end; (b) at least one database; (c) a transaction server; (d) a rate server; (e) a pricing engine; (f) an interest rate manager; (g) a trade manager; (h) a value at risk server; (i) a margin control manager; (j) a trading system monitor; and (k) a hedging engine. In another aspect, the present invention comprises methods for trading currency over a computer network. In another aspect, the present invention comprises software for currency trading over a computer network.

CROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims priority to U.S. provisional applicationNo. 60/274,174, filed Mar. 8, 2001, and incorporates the entire contentsthereof herein by reference.

FIELD OF THE INVENTION

[0002] The present invention is related to currency trading; moreparticularly, the invention is related to trading currency over acomputer network.

BACKGROUND

[0003] In a traditional on-line currency market, a trade occurs throughthree steps: (1) the trader specifies to a dealer the currency pair andthe amount that he would to trade (but does not specify whether he wouldlike to buy or sell); (2) the dealer specifies to the trader both a bidand an ask price and gives the trader several seconds to respond (thedealer not knowing whether the trader will buy, sell, or reject theoffer); and (3) the trader either rejects the offer or specifies whetherhe is buying or selling (his response must occur within a time frame ofa few seconds).

[0004] But performing such a three-way handshake over the Internet issomewhat impractical because of Internet delays: the trader might notactually have a few seconds to respond before the dealer withdraws theoffer. Thus, there is a need for a system and method of on-line currencytrading that is based on a trading model that is superior to thethree-way handshake described above.

[0005] Another problem is that many corporations have firewalls thatrestrict access to the corporate network, and that typically restrictaccess to the Internet (and to well-known services such as email, theWorld Wide Web, etc.) from within the corporation. This inhibits theability of on-line trading systems to access information from andtransfer information to users behind corporate firewalls.

SUMMARY

[0006] The present invention overcomes the above-described and otherdisadvantages of previous currency trading systems and methods. In oneaspect, the present invention comprises a system for trading currenciesover a computer network. A preferred embodiment comprises: (a) a serverfront-end; (b) at least one database; (c) a transaction server; (d) arate server; (e) a pricing engine; (f) an interest rate manager; (g) atrade manager; (h) a value at risk server; (i) a margin control manager;(j) a trading system monitor; and (k) a hedging engine. Each of thesecomponents is described in detail below in the Detailed Descriptionsection.

[0007] In another aspect, the present invention comprises methods fortrading currency over a computer network. In one embodiment, a preferredmethod comprises: (a) transmitting currency market information over acomputer network to an end user; (b) receiving a currency trade orderfrom the end user, wherein the currency trade order comprises limitswithin which the currency trade will be acceptable to the end user; (c)calculating a market exchange rate for the currency trade order; and (d)executing the order if the market exchange rate is within the specifiedlimits.

[0008] In another embodiment, a preferred method comprises: (a)transmitting currency market information over a computer network to anend user; (b) receiving a currency trade order from the end user,wherein the currency trade order comprises a threshold exchange rate;(c) calculating a market exchange rate for the received currency tradeorder; and (d) executing the order (1) if the market exchange rate is orgoes above the threshold exchange rate and the order is a sell order,and (2) if the market exchange rate is or goes below the thresholdexchange rate and the order is a buy order.

[0009] In a further embodiment, a preferred method comprises: (a)receiving currency market information over a computer network from atrading system server; (b) transmitting a currency trade order to thetrading system server, wherein the currency trade order comprises limitswithin which the currency trade will be acceptable; and (c) if a marketexchange rate is within the specified limits, receiving information fromthe trading system server indicating that the currency trade order wasexecuted.

[0010] In another embodiment, a preferred method comprises: (a)receiving currency market information over a computer network from atrading system server; (b) transmitting a currency trade order to thetrading system server, wherein the currency trade order comprises athreshold exchange rate; and (c) if (1) the applicable market exchangerate is or goes above the threshold exchange rate and the order is asell order, or (2) the applicable market exchange rate is or becomesbelow the threshold exchange rate and the order is a buy order,receiving information from the trading system server indicating that thecurrency trade order was executed.

[0011] In another aspect, the present invention comprises software forcurrency trading over a computer network. In one embodiment, preferredsoftware comprises: (a) software for receiving data over a computernetwork from a trading system server; (b) software for displaying afirst graphical user interface display that: (i) displays continuouslyupdated currency exchange rates in real-time based on data received fromthe trading system server; and (ii) displays action buttons, including abuy/sell button; (c) software for displaying, in response to a userclicking the buy/sell action button, a buy/sell window display that: (i)comprises trade order parameter fields; and (ii) accepts trade orderdata entered into the trade order parameter fields by a user; and (d)software for transmitting said trade order data to said trading systemserver over said computer network.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012]FIG. 1 depicts parties involved in a preferred embodiment.

[0013]FIG. 2 depicts a graphical user interface of a preferredembodiment.

[0014]FIG. 3 depicts modules of a preferred trading system server.

[0015]FIG. 4 depicts hardware components of a preferred embodiment.

[0016]FIG. 5 depicts a graphical user interface of a preferredembodiment.

[0017]FIG. 6 depicts an account summary table display.

[0018]FIG. 7 depicts an open trades table display.

[0019]FIG. 8 depicts an open positions table display.

[0020]FIG. 9 depicts an open orders table display.

[0021]FIG. 10 depicts a transactions table display.

[0022]FIG. 11 depicts a currency rates table display.

[0023]FIG. 12 depicts a currency exchange rate graph display.

[0024]FIG. 13 depicts a buy/sell pop-up window display.

[0025]FIG. 14 depicts an acknowledgment window display.

[0026]FIG. 15 depicts an entry order display.

[0027]FIG. 16 depicts steps of a method of a preferred embodiment.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

[0028] The Currency Trading System of a preferred embodiment(hereinafter “Trading System”) of the present invention allows tradersto trade currencies over a computer network. Preferably, this computernetwork is the Internet, and the subsequent description herein isprimarily in terms of the Internet. However, those skilled in the artwill recognize that the following description also applies to othercomputer networks. Traders interface to the system using ordinary Webbrowsers running feature-rich Java applets; they obtain real-time datafeeds of current exchange rates, they can analyze past exchange ratesusing graphical tools, they can review their current portfolio and pasttrades, and they can place buy and sell orders in the real-time market.Businesses interface to the system using an API. Innovative featuresthat set the Trading System apart from the competition are: (i)extremely low spreads on the order of a few basis points, (ii) theability to trade very small amounts as low as $1, and (iii) 24 hour aday, 7 days a week availability. This system has the potential torevolutionize the way currency trading is done and to open up currencytrading to a new, large market segment of investors and speculators forwhom currency trading is not feasible today. Moreover, it allowsbusinesses to address their currency exchange requirements in the mostcost-effective and efficient way.

[0029] A description of the preferred server infrastructure used in theTrading System follows. We first give a brief introduction of the systemas a whole.

[0030] The Trading System involves three components (see FIG. 1): (1)traders that are distributed around the world; (2) Trading Systemservers; and (3) “Partners” consisting of the financial institution(s)through which real currency exchange trades are executed, and from whichreal-time data feeds are obtained.

[0031] Traders communicate with Trading System servers over a secure,encrypted Internet connection to review their accounts, to monitorcurrency exchange market conditions, or to initiate currency exchangetrades. The Trading System servers are preferably connected to thepartners' back-office systems, using direct, private lines.

[0032] A trader trades with the Trading System similar to the way shecurrently trades with a broker, except that the trading is over the Web,occurs 24 hours a day, 7 days a week, and allows very small trades withvery low spreads. Moreover, an initial deposit, which may be as low as$20, can be charged to a credit card to get started. Alternatively, thetrader can transfer initial funds directly to the Partner bank to becredited to her Trading System account.

[0033] The end user interface to the Trading System is a Web page thatcan be displayed on any standard Java-enabled browser. The Web page (oneversion is shown in FIG. 2; a second, preferred version is shown in FIG.5) depicts a summary of the trader's current position, recent tradingactivities, profit/loss performance of the portfolio, and a graphicaldisplay of recent past performance of the currencies the trader haspositions in, as well as real-time exchange rates.

[0034] As discussed above, in a traditional on-line currency market atrade occurs through three steps: (1) a trader specifies a currency pairand an amount he would like to trade (and does not specify whether hewould like to buy or sell); (2) a dealer provides both a bid and an askprice to the trader and gives the trader several seconds to respond (thedealer does not know whether the trader will buy, sell, or reject theoffer); and (3) the trader either rejects the offer or accepts the offerand specifies whether he is buying or selling, within the responseperiod set by the dealer.

[0035] In the Internet domain, this type of three-way handshake isproblematic. The timing constraints are difficult to implement becauseof frequent delays in transmission over the Internet. To overcome thisproblem, the present invention uses a “two-way handshake,” in which: (1)a trader specifies in her trade order: (a) a currency pair; (b) adesired amount to trade; (c) whether she wishes to buy or sell; and(optionally) (d) upper and lower limits on an acceptable exchange rate;and (2) a dealer (in this case, a preferred Trading System) executes thetrade using the most current “market rates” (as calculated by thesystem). However, the system only executes the order if the calculatedmarket rate lies above any specified lower limit and below any specifiedupper limit. Note that this method does not require the use of timingconstraints, and thus avoids the Internet-implementation disadvantage ofprevious methods.

[0036] In the present invention, trades can be initiated by the traderat the push of a button. A trading request form pops up with fieldsproperly initialized so as to minimize the number of keystrokesrequired. A trader may elect to execute a trade right away, in whichcase the buyer of a currency will buy at the current exchange ratemarket offer price. Conversely, a trader can sell a currency at thecurrent bid price. A range of automatic trading options is available,including setting bid/offer prices with a certain duration and“all-or-nothing” rules. Furthermore, the trader can limit her risks byplacing stop-loss orders that are executed automatically. Similarly, shecan lock in profits, by issuing take-profit orders.

[0037] All communication between the trader's browser and the TradingSystem server occurs through the Internet, preferably using thestrongest available encryption (e.g., 128 bit keys). Moreover, thetrader must authenticate herself using private passwords orcertification keys obtained from certification authorities, such asVerisign or Entrust.

[0038] A request for a market trade preferably proceeds as follows: thetrader, at a push of a button, obtains a trade order ticket in a popupwindow on the browser with key fields pre-initialized (see FIG. 13).When the trade order is issued, again by the push of a button, a messageis sent to a Trading System server, where the market price is calculatedbased on such factors as market data, size of the transaction, time ofday, the Trading System's current exposure, and predictions on marketdirection. The trade order is executed using this market price. (Thetrader can specify limits, so that the trade occurs only if the pricefalls within these limits.) As such, the Trading System operates as amarket maker. A message is then sent hack to the trader with specifictrade details, which is displayed in a popup window (see FIG. 14) on thetrader's browser together with a transaction id (for future reference).Moreover, an open orders table (see FIG. 9) and current portfoliosummary table (not shown) is updated to reflect the change.

[0039] Alternatively, the trader can issue in a similar manner an entryorder (see FIG. 15) that requests a trade be made when the currencyexchange rate reaches a specified threshold. The trader may specify howlong the entry order will be valid.

[0040] Referring to the attached figures, a preferred embodimentcomprises a method of trading that in turn comprises the following steps(see FIG. 16): At step 1605, a trader desiring to trade opens a TradingStation display, and at step 1610 clicks a “Buy/Sell” button 510 on theTrading Station display (see FIG. 5). At step 1615 an order window isdisplayed (see FIG. 13). At step 1620 the trader decides whether toplace a market order or an entry order. If a market order, then thetrader proceeds to step 1635 and enters desired order parameters (asshown in FIG. 13). If an entry order, then the trader proceeds to step1625 and clicks an “Entry” tab 1320 (see FIG. 13). At step 1630 entryorder fields are displayed (see FIG. 15). Then the trader proceeds tostep 1635 and enters desired order parameters (as shown in FIG. 15).

[0041] Once order parameters are entered at step 1635, the tradersubmits the order by clicking a “Submit” button 1310 (see FIG. 13) ifthe order is a market order, or clicking a “Submit” button 1510 (seeFIG. 15) if the order is an entry order. At step 1645 data describingthe order is sent by the Trading Station application to a Trading Systemserver, where the data is stored. At step 1650 a current market pricefor the currency the trader desires to purchase is calculated. At step1655 the trader's order is executed if (a) the trader's order is amarket order and the calculated market price is within the limits set bythe trader in the market order form at step 1635; or (b) order is anentry order and the calculated market price meets the threshold(s)specified in the Entry order form at step 1635.

[0042] At step 1660 the Trading System server sends trade status data tothe trader's Trading Station application. This data includes anindication that the order has been executed, if that is the case, and atany rate includes an indication that the order has been received. Atstep 1665, the Trading Station application displays an orderacknowledgment window (see FIG. 14) that displays order statusinformation.

[0043] Over time, the Trading System will accumulate an imbalance in itscurrency portfolio and, at times, it will need to neutralize its riskexposure to adverse currency fluctuations. The Trading System PricingEngine can influence its exposure by setting its price quotesaccordingly. Moreover, it can close out its positions periodically ortake hedging positions by executing larger trades through its Partners.Preferably the Trading System's positions are managed based onstate-of-the-art trading models. Preferred trading models are describedin U.S. patent application no. [METHODS FOR TRADE DECISION MAKING, toOlsen et al.], filed May 14, 2001, the contents of which areincorporated herein by reference, as well as in U.S. provisionalapplication No. 60/274,174, filed Mar. 8, 2001.

[0044] The Trading System servers preferably operate 24 hours a day, 7days a week. These servers interface with the traders over the Interneton the one hand and on the other hand with the Partner's back-officeoperations. Using standard, state-of-the-art database technology, itmaintains the accounts of all traders and executes trades issued by thetraders. The Trading System thus plays the role of a market maker inthat it internally aggregates all trades and only occasionally balancesits internal positions by trading larger sums through the Partner. Theselarger trades are issued to the Partner in an automated way. The TradingSystem also takes hedging positions so as to minimize risks on theunbalanced portions of the traders' account aggregates.

[0045] Partner's Role

[0046] The Partner maintains all actual funds. It is the source andtarget of all fund transfers to and from customers; it maintains theaggregate accounts; and it executes all trades issued automatically bythe Trading System servers. From a legal point of view, all funds mustbe maintained in money market instruments. Hence, the Partner willmaintain a Long and a Short money market fund for each currencysupported.

[0047] Overview of Currency Trading System Server Internal Design

[0048] The Trading System server architecture is designed to be:

[0049] (1) modular, in order to: (a) simplify development(time-to-market); (b) easily allow extensions and modifications; (c)ensure correctness and robustness, and (d) keep it maintainable;

[0050] (2) efficient, in order to provide fast response times to onlineusers and minimize the computational and networking resources requiredto support the service;

[0051] (3) scalable, in order to support (with suitable computinginfrastructure) a large number of online users and high transactionvolumes; and

[0052] (4) fault resilient, so that any individual failure of acomputing node or network connection does not interrupt service.

[0053] The Trading System server software preferably runs exclusively onUnix platforms, and is composed of the following modules, each with adistinct set of responsibilities (see FIG. 3):

[0054] (1) Database (DBMS) 310.

[0055] This is the heart of the server. It keeps track of customerprofile information, all customer accounts and all transactions, andensures that atomicity, consistency, independence, and durability(“ACID”) properties are maintained. The database is the reference pointfor all information kept by the system.

[0056] The database is preferably a standard commercially-available SQLdatabase, configured for full replication for reliability, availability,and improved performance. The preferred embodiment is based on IBM'sDB-2 product line, but Oracle, for example, could also easily be used.

[0057] (2) Server Front-end 315.

[0058] The server front-end 315 is responsible for all communicationwith the Web-based clients. It supports both persistent andnon-persistent connections to the traders. The persistent connects areused primarily for periodic (i.e., every few seconds) transmission ofthe latest currency rates so that the traders can update the currencygraphs and tables in real-time. Using persistent connectionssignificantly reduces protocol processing overhead and reduces networkbandwidth requirements. Non-persistent connections are used for alltransaction-oriented requests, such as orders, transaction historyrequests, logins, etc. All transaction-oriented communication betweenthe trader browsers and the Server Front-end occurs fully encrypted,while rate information is transmitted in unencrypted form for efficiencyreasons.

[0059] Traders preferably communicate with the server using arequest-response type of protocol. The Server Front-end 315 interpretseach request it receives and, for each, takes appropriate action. Forlogin requests, it sets up appropriate data structures so that allfuture requests can be serviced in the most efficient way. It also setsup encryption keys for secure communication, and logs the start of a newsession with the Transaction Server. For rate requests, it returns therequested rates it obtains from the rate server. For orders, it executesthe orders by issuing appropriate requests to the transaction serverafter checking the margin requirements, the availability of funds, andusing rates as determined by the pricing engine. Forstop-loss/take-profit and fixed-price orders (that may get executed inthe future), the Trade Manager 365 is also informed. For each trade thatgets executed, the Hedging Engine 340 and Margin Control 350 modules areinformed, so that they always have an up-to-date snapshot of the state.For transaction history, the appropriate information is returned to theclient after obtaining it from the Transaction Server 355.

[0060] The Server Front-end 315 also encapsulates a standard Web server(a la Apache), that services other trader requests that entail formattedtext; this includes all of the Help pages, large transaction historyrequests, and server monitoring information. The Server Front-end 315also acts as a Firewall.

[0061] Internally, the Server Front-end 315 is structured as a set ofthreads that service one request after another. The threads allowconcurrent request servicing so that many requests can be serviced inparallel.

[0062] (3) Rate Server/Pricing Engine 325.

[0063] The Rate Server obtains currency exchange rate information from avariety of external rate sources and stores it locally. The PricingEngine computes the currency exchange rates that the traders see andthat are used for trading. These are computed from the currency exchangerates obtained from the external rate sources, the directional movementand volatility of the market, the current Trading System exposure and anumber of other parameters. The computed rates are made available to theother modules of the system, and are also stored on persistent media.Various methods of calculating such rates are known to those skilled inthe art. A preferred method is described in U.S. patent application Ser.No. 09/764,366, filed Jan. 18, 2001, to Müller et al.

[0064] Traders can request historical rate data so that they cangraphically display the movements of any pair of currencies. The RateServer serves such requests and preferably has several years of currencyexchange rates available for this purpose.

[0065] For fast response time, the Rate Server caches in memory all ofthe frequently and recently requested rates so as to minimize the numberof disk accesses required.

[0066] (4) VAR (Value at Risk) Server 320.

[0067] This server obtains and serves Value at Risk information. Variousmethods of calculating VAR are known in the art. A preferred method isdisclosed in U.S. Provisional Patent Application No. 60/200,742, filedMay 1, 2000, to Müller.

[0068] (5) Transaction Server 355.

[0069] This server encapsulates all transaction functionality andcommunicates the transactions to the Database 310 server (which runs ona separate host) after validating the transactions. The TransactionServer 355 also updates all other modules that need to be informed ofnew transactions. Finally, the Transaction Server 355 informs thecurrently online traders when a transaction (that may have been issuedby a stop-loss, take-profit, or limit order daemon or by the MarginControl Manager) takes place.

[0070] (6) Interest Rate Manager 360.

[0071] The Interest Rate Manager 360 periodically (for example, everyfew minutes, every few seconds, or tick-by-tick) goes through all traderaccounts to compute the interest rate due or owed based on theinstruments currently in the portfolio, each resulting in a transactionof the trader account. The portfolio information is obtained through theTransaction Server 355. The interest rates used are obtained fromexternal sources, and the history of interest rates are stored onpersistent storage. Because real-time (or near real-time) information isused, the Interest Rate Manager is capable of calculating, paying out,and collecting interest by the second. Interest calculation formulas areknown to those skilled in the art, and any appropriate formula can beused in the Interest Rate Manager without departing from the scope ofthe invention. An example is the formula$A = {P\left( {1 + \frac{r}{m}} \right)}^{mt}$

[0072] where P is the principal, r is the annual interest rate, t is thetime (in years) over which interest is earned, m is the number of timesper year that interest is compounded, and A is the amount owed(principal plus interest). The interest earned during time t is A−P.Thus, for example, if the annual interest rate is 3%, and the interestis compounded daily, then the interest I_(k) earned over each timeperiod T_(k)=t_(k)−t_(k−1), where each t_(k) is a clock-time (i.e., aparticular day-hour-minute-second-fraction-of-a-second) to the nearestsecond (thus T_(k) is in seconds), is calculated according to theformula I_(k)=A_(k)−P_(k), where P_(k) is the principal (the amountearning interest, not the “original” principal) at time t_(k−1), and$A_{k} = {{P_{k}\left( {1 + \frac{0.03}{365}} \right)}^{\frac{365T_{k}}{31,536,000}}.}$

[0073] Since there are 31,536,000 seconds per year,$\frac{T_{k}}{31,536,000}\quad {is}$

[0074] the time in years over which the interest is being calculated.Similar formulas can be used when t_(k) is given to the nearest tenth,hundredth, or other fraction of a second. If interest is compoundedcontinuously, those skilled in the art will recognize how to apply thewell-known formula A=Pe^(rt) appropriately. Thus, to calculate intereston a tick-by-tick basis, the above formulas can be used, with T_(k)representing time between ticks.

[0075] (7) Trade Manager 365.

[0076] The Trade Manager 365 continuously checks whether a trade shouldbe executed on behalf of a trader, and if so executes the trade byinteracting with the transaction server. The Trade Manager 365 consistsof multiple subcomponents: (a) a stop-loss daemon continuously checks tosee whether stop-loss orders should be executed and, if so, executesthem through the Transaction Server 355; (b) a take-profit daemoncontinuously checks to see whether take-profit orders should be executedand, if so, executes them through the Transaction Server 355; and (c) alimit-order daemon continuously checks to see whether a limit ordershould be executed and, if so, executes it through the TransactionServer 355.

[0077] The daemons continuously monitor the current rates to determinewhether action is required. Moreover, each of the daemons caches inmemory all of the orders that it may need to execute. They keep theorders suitably sorted so that they can take fast action when necessary;for example, the stop-loss daemon sorts the orders in descending orderof stop-loss price, the take-profit in ascending order of take-profitprice.

[0078] (8) Margin Control Manager 350.

[0079] This module continuously monitors the margin requirements of alltrader accounts. When necessary, the Margin Control Manager 350 willliquidate some (or all) of a trader's holdings. It caches in memory allof the information necessary for this computation, sorted in decreasingorder of risk, so that it can take swift action when necessary. Holdingsare liquidated through the Transaction Server 355, when necessary.

[0080] (9) Trading System Monitor 330.

[0081] This module continuously monitors the current state of theTrading System. Among others, state parameters include: (a) currentTrading System currency positions; (b) current margin situation; (c) asummary of stop-loss, take-profit, and limit orders that exist; (d) thenumber of currently online users; (e) the number, size and type oftrades executed per second; and (f) a summary of the account positionsheld by the users.

[0082] This information is made available (a) to the Pricing Engine 325(where it is used to set the currency exchange rates made available tothe traders), (b) to the Hedging Engine 340 so that it can determinewhen to issue trades with the Partner Bankend Bank, and (c) to systemoperators and Trading System financial engineers in real time via afeature-rich Web interface. Moreover, this information is logged onpersistent storage for later, off-line analysis.

[0083] (10) Hedging Engine 340.

[0084] This module continuously monitors current Trading System currencypositions, the positions held in the trader accounts, recent tradingactivity, and the market direction and volatility to determine when toissue a trade with the backend Partner Bank. Various methods ofperforming such calculations are known to those skilled in the art. TheHedging Engine 340 preferably uses the hedging tool described in U.S.patent application Ser. No. 09/764,366, filed Jan. 18, 2001, to Mülleret al., the contents of which are incorporated herein by reference.

[0085] (11) Partner Bank Interface 335.

[0086] This module communicates directly with the backend Partner Bankto issue trades and obtain account information.

[0087] (12) Computer Systems Monitor 345.

[0088] This module continuously monitors the operation and state of thecomputer systems on which the Trading System is running. Besides errorconditions, such metrics as memory, processor, disk, and networkutilization; paging activity; the number of packets sent over thevarious networks; the number of transactions; and the number ofprocesses and threads are of interest. This information is madeavailable to system operators in real time via a feature-rich Webinterface and local consoles. In addition, it is stored on persistentstorage for later, off-line analysis.

[0089] The Server modules described above are structured so that theycan run independently as separate processes that can be independentlymapped onto an arbitrary computer within a cluster. Moreover, each ofthe modules can run in replicated form, providing both fault toleranceand increased throughput.

[0090] Preferred Physical Organization of the Trading System Server

[0091] A Trading System Server of a preferred embodiment runs on ahardware base consisting of a cluster of hosts and disk farms connectedby networks. All of the hardware components are preferably replicatedfor fault tolerance, as depicted in FIG. 4.

[0092] The cluster is connected to multiple ISPs so that if one ISP goesdown, traders can still communicate with the server. The ISPs areconnected to the Server through a pair of routers 410 that monitor eachother; if one of them goes down, then the other will automatically takeover.

[0093] For security reasons, the Database 310 is on a separate back-endnetwork; this way, it is not connected directly to the Internet and canonly be accessed by the Transaction Server 355. The Database 310 issetup in a dual configuration, so that the system can continue operatingwith a single database failure. All disks are mirrored, again, so thatany single disk failure will not result in a loss of data.

[0094] All of the other server processes run on a cluster of servers420, connected to the Internet routers 410 on the one side, andconnected to the backend database 430 on the other side. A virtuallyunlimited number of servers can be used in the cluster, allowing thesystem to scale up to support a large number of users. The servers canbe partitioned by functionality, allowing specialized servers to beused, optimized for the particular functionality. For example, the RateServers 325 need minimal CPU power, and only a limited amount of memory.They also can be replicated easily without the introduction of anycomplexity or overhead. Hence, smaller, less costly hardware can be usedfor this purpose.

[0095] After login, traders typically communicate with a particularserver in “sessions” for performance reasons. Using sessions improvescache locality, resulting in far fewer database accesses, and it allowsthe cost of creating session encryption keys to be amortized over manycommunication actions. For load balancing purposes, the trader softwareis directed to henceforth communicate with the least loaded server atthe time when the trader first logs in.

[0096] In case of severe load imbalances, individual traders areredirected to new, less loaded servers. If any of the servers crashes,then the client software that was communicating with the crashed serverwill detect the failure and automatically (transparently to the user) gothrough a new login procedure.

[0097] User Interface Description

[0098] Overview

[0099] The following is a description of a preferred user interface of apreferred Trading System. The main user interface display is called a“Trading Station,” and it is used for all interactions with the tradingsystem by a trader, such as analyzing changes in currency exchangerates, reviewing the trader's current currency positions, reviewing thetrader's past transactions, or issuing buy and sell requests. The keyfeatures of the Trading Station are that: (1) it runs on any of thepopular Web browsers connected to the Internet; (2) it displayscontinuously updated currency exchange rates in real-time; (3) itdisplays all pertinent information in one window; and (4) allinteraction with the server occurs over fully-encrypted Internetconnections.

[0100] System Requirements

[0101] The User Interface is preferably implemented in Java so as to runon any browser with JDK1.2 support, which includes all NetscapeNavigators versions 4.2 and up as well as Microsoft's Internet Explorerversions 5.0 and up. The Trading Station is preferably supported forWindows 95, Windows 98, Windows 2000, Windows NT, Linux, Sun Solaris,and other Unix-based operating systems.

[0102] If operated from behind a firewall, then the Trading Station mayoperate properly only if the firewall allows HTTP requests to Port 90.Many corporations have firewalls that restrict access to the corporatenetwork to well-known services such as email. Typically this restrictionis accomplished by restricting the ports that may be used. For example,Port 80 is typically used for http (Web-based) traffic. Some firewallsinspect traffic going through Port 80 to ensure that the port is beingused only for Web-based traffic. This is problematic for trading systemsthat do not use http messages—it causes users behind corporate firewallsto be inaccessible. However, a preferred embodiment of the presentinvention overcomes this obstacle by prefacing Trading System messageswith standard http headers to make them appear to be http requests andresponses, even though they are not.

[0103] Log In Procedure

[0104] In order to log in, a trader must be a registered user.Registering is preferably free and can be accomplished by clicking on a“new users” link on a login page. Logging in requires a user to providea user-ID and password. If a trader forgets her password, she can clickon the “forgot your password” link and fill in the informationrequested; her password will be then be emailed to her.

[0105] If user-ID and password are entered correctly, a small windowappears indicating that the Trading Station is being loaded. After ashort time, a larger window appears with the Trading Station GraphicalUser Interface shown in FIG. 5. Once the Trading Station is properlyloaded, the contents of the small window is changed to include a numberof useful links. It is important that this small window not be closedwhile the Trading Station is to remain in operation, although it may beminimized so as not to be in the trader's way. (This small window isnecessary due to the limitations of typical Java implementations on mostbrowsers that would otherwise not allow a trader to continue browsingthe Web while the User Interface is active.)

[0106] Main Window of Trading Station

[0107] The Trading Station user interface is shown in FIG. 5. It can beresized to a convenient size, by using the standard resizing mechanismssupported by the trader's operating system's windowing system.

[0108] The Trading Station is preferably partitioned into a number ofcomponents that each serve a different purpose:

[0109] (A) Action buttons: a vertical panel located on the left handside of the Trading Station contains a set of action buttons that allowa user to perform the most common operations.

[0110] (B) Menus: a set of pull-down menus across the top allows a userto invoke additional operations.

[0111] (C) Account summary: an area in the middle of the Trading Stationthat gives a summary of the user's account.

[0112] (D) Table: an area located across the top of the Trading Stationthat is used to display various information in tabular format. Theinformation displayed depends on the most recently clicked ActionButton. It might display currently held instruments, current openpositions, or a history of recent transactions.

[0113] (E) Currency rates: an area at the bottom left that displaysvarious currency rates. These rates are continuously updated in realtime.

[0114] (F) Graph: located at the bottom-right corner, graphs displaycurrency rates over time. The graphs are also updated in real-time asnew rates become available.

[0115] Subsequent sections describe each of these components in detail.

[0116] Action Buttons

[0117] The Trading Station preferably has the following action buttonsin a panel on the left side. Clicking the appropriate button will invokethe described operation:

[0118] Buy/Sell: Pops up a Buy/Sell window, from which a trader canissue trade requests. (See the description of the buy/sell window (FIG.13) for more information.)

[0119] Positions: Displays the currently open positions in a table. (Seethe description of the Open Positions Table (FIG. 8) for the contents ofthe table.)

[0120] Trades: Displays the currently open trades in a table. (See thedescription of the Open Trades Table (FIG. 7) for the contents of thetable.)

[0121] Orders: Displays the open orders (that may be executed some timein the future) in a table. (See the description of the Open Orders Table(FIG. 9) for the contents of the table.)

[0122] History: Displays a recent history of the trader's transactionsin the table. (See the description of the History Table (FIG. 10) forcontents of the table.)

[0123] Analysis: Pops up a new browser window with access to a number ofanalysis tools that might help in making trading decisions.

[0124] News: Pops up a new browser window with the latest currency news.

[0125] Forums: Pops up a new browser window with access to a number offorums (sometimes known as newsgroups) that allow a trader toparticipate in discussions with other traders and currency tradingexperts.

[0126] Pull-Down Menus

[0127] There are preferably 5 pull-down menus (not shown), each offeringdifferent operations or services:

[0128] Connection Menu: (1) Disconnect: disconnects the Trading Stationfrom the Trading System server. The Trading Station will remain open,but currency rates will no longer be updated, and transactions will notbe possible. (2) Connect: connect the Trading Station to the server, sothe trader is back on line. (3) Quit: quit and exit this application.

[0129] Account Menu: (1) Transaction history: pop up a new browserwindow to display an extensive list of all transactions that occurred ona trader's account. See the Transaction History section (relating toFIG. 10) for a description of what is displayed. (2) Clear accountbalance and P/L: for those who have incurred large losses on theiraccount, this operation allows a trader to start over again with acleared P/L and new funds in the account. This feature is primarilyuseful when an account on the Trading System is used as a game—i.e., noreal money changes hands. (3) Add funds to account: for a game account,add funds to the account for a real money-account, transfer money intothe account from the trader's credit card or obtain instructions on howto wire transfer money into the trader's account. (4) Buy/Sell: issue atrade or market order (see FIG. 13). (5) Open positions: display theopen positions in a table (see FIG. 8). (6) Open trades: display allopen trades in a table (see FIG. 7). (7) Open orders: display all openorders in a table (see FIG. 9). (8) Recent transaction history: displaythe most recent transactions in a table (see FIG. 10).

[0130] Commands Menu: (1) Change passwords. (2) Graph: specify thecurrency pair to be displayed in the graph.

[0131] Information Menu: (1) Interest rates: display interest rateinformation in a separate browser window. (2) Market News: displayup-to-date currency market news in a separate browser window. (3)Analysis tools: use an analysis tool in a separate window. (4) Forum:participate in various forums related to currency trading. (5) Rankings:see a list of the most successful currency traders using the TradingSystem.

[0132] Help Menu: (1) Documentation: links to descriptive documents. (2)About: display software version number and credits. (3) Debug: displaydebugging information in a new window.

[0133] Account Summary

[0134] The account summary display (see FIG. 6 for an example) is asmall table that provides a summary of the trader's account status. Itpreferably shows: (1) Account Balance: the amount of the trader's cashholding in the trader's account. (2) Realized P/L: the amount of profitor loss the trader has incurred with the trader's trading activity todate. (3) Unrealized P/L: the amount of profit or loss that the traderholds with the trader's current open positions. If the trader clears allof his open positions, then this amount would be added to the RealizedP/L amount. (4) Margin Used: the amount of the trader's account balanceand unrealized P/L tied up for margin purposes.(5) Margin Available: theamount of the trader's account balance and unrealized P/L available asmargin for new trading transactions.

[0135] This information is preferably continuously updated in real-timeto take current market conditions into account. Moreover, theinformation is always shown in the trader's home currency.

[0136] Tables

[0137] The table area of the Trading Station shows different informationdepending on the last Action Button-selected. It can include: (1) opentrades; (2) open positions; (3) open orders; and (4) transactionhistory. The default is open positions.

[0138] How the information in the table is displayed can be controlledin two ways: (1) Scroll bars are used to scroll the table up or down,allowing a trader to see information that is hidden from view. (2)Sorting can be achieved by clicking on a column header, which causes thetable to be sorted so that the column is in increasing or decreasingorder. Clicking once sorts the column in increasing order; clickingagain sorts it in decreasing order.

[0139] For all tables except Transaction history, clicking on a row ofthe table will cause a pop-up window to appear, offering further actionsfor that open trade, position, or order.

[0140] Open Trades Table

[0141] The open trades table (see FIG. 7) shows a list of the trader'scurrently open trades. The table preferably has 9 columns, describedfrom left to right (not all are depicted in FIG. 7):

[0142] (1) Short/Long: Indicates whether the position is short or long.

[0143] (2) Ticket Number: a number that uniquely identifies an opentrade. A trader can use this number as a reference for inquiries to theTrading System or its operators, or to search for particular entries inthe transaction history table.

[0144] (3) Currency pair: the pair of currencies involved in this trade.The first currency of the pair is referred to as the base currency,while the second one is referred to as the quote currency.

[0145] (4) Units: the number of transacted units for this trade,expressed in the base currency.

[0146] (5) S/L: the trader's stop-loss for this trade. This trade willbe closed automatically as soon as the currency exchange rate for thiscurrency pair crosses the S/L value. A stop-loss limit is used to limitthe loss a trader may incur with this trade.

[0147] (6) T/P: the trader's take-profit for this trade. This trade willbe closed automatically as soon as the currency exchange rate for thiscurrency pair crosses the T/P value. A take-profit limit is used torealize the trader's profit as soon as it reaches the T/P value.

[0148] (7) Rate: the exchange rate obtained when the trade got executed.

[0149] (8) Market: the current exchange rate for this currency pair.

[0150] (9) Profit: the unrealized profit (when positive) or loss (whennegative) expressed in base currency and on a per unit basis.

[0151] Clicking on the scroll buttons will cause the table to scroll upor down. Clicking on a column header will sort the table so that thecontents of the column are displayed in increasing or decreasing order.Clicking on a row with an open trade will cause a pop-up window toappear offering two operations: (1) Close trade. (2) Modify trade. Thisis used to modify the S/L or the T/P limits.

[0152] Open Positions Table

[0153] The Open Positions Table (see FIG. 8) displays a list of thetrader's open positions. It is similar to the Open Trades table, exceptthat all trades of the same currency pair are aggregated into one line.

[0154] The table preferably has 6 columns, described from left to right(not all are shown in FIG. 8):

[0155] (1) Short/Long: Indicates whether the position is short or long.

[0156] (2) Currency pair: the pair of currencies the position refers to.The first currency of the pair is referred to as the base currency,while the second one is referred to as the quote currency.

[0157] (3) Units: the number of units held in this position, expressedin the base currency.

[0158] (4) Rate: the average exchange rate obtained for the trades inthis position.

[0159] (5) Market: the current exchange rate for this currency pair.

[0160] (6) Profit: the unrealized profit (when positive) or loss (whennegative) expressed in base currency and on a per unit basis.

[0161] Clicking on the scroll buttons will cause the table to scroll upor down. Clicking on a column header will sort the table so that thecontents of the column displayed in increasing or decreasing order.Clicking on a row with an open position will cause a pop-up window toappear offering the option to close the position.

[0162] Open Orders Table

[0163] The Open Orders Table (see FIG. 9) shows a list of the trader'scurrently open orders. An open order is a request that a particulartrade should be made automatically when the exchange rate of thespecified currency pair crosses a specified threshold.

[0164] The table preferably has 9 columns, described from left to right(not all are shown in FIG. 9).

[0165] (1) Short/Long: indicates whether the position is short or long.

[0166] (2) Order ID: a number that uniquely identifies the order. Atrader can use this number as a reference for inquiries to the TradingSystem.

[0167] (3) Currency pair: the pair of currencies to be traded.

[0168] (4) Units: the number of units to be traded, expressed in thebase currency.

[0169] (5) S/L: the stop-loss for this trade. This trade, once executed,will be closed automatically as soon as the currency exchange rate forthis currency pair crosses the S/L value. A stop-loss limit is used tolimit the loss a trader may incur with this trade.

[0170] (6) T/P: the trader's take-profit for this trade. This trade,once executed, will be closed automatically as soon as the currencyexchange rate for this currency pair crosses the T/P value. Atake-profit limit is used to realize the trader's profit as soon as itreaches the T/P value.

[0171] (7) Rate: specifies that the trade should be executed as soon asthe exchange rate for the specified currency pair crosses this value.

[0172] (8) Market: the current exchange rate for this currency pair.

[0173] (9) Duration: specifies the amount of time an order should stand,until it is automatically canceled.

[0174] Clicking on the scroll buttons will cause the table to scroll upor down. Clicking on a column header will sort the table so that thecontents of the column are displayed in increasing or decreasing order.Clicking on a row with an order will cause a pop-up window to appearoffering two operations: (1) Cancel order. (2) Modify order. This isused to modify the exchange rate threshold at which the trade is to beexecuted, or the S/L or T/P limits.

[0175] Transactions Table

[0176] The Transactions (or Transaction History) Table (see FIG. 10)shows a list of the most recent transactions on the account. For accessto a full list of past transactions, a user selects the Informationpull-down menu and then selects Transaction History.

[0177] The Transaction History Table preferably has 6 columns, describedfrom left to right:

[0178] (1) Transaction ID: uniquely identifies the transaction.

[0179] (2) Type: identifies the type of transaction.

[0180] (3) Currency pair: the pair of currencies associated with thetransaction.

[0181] (4) Units: the number of units to traded in the transaction,expressed in the base currency.

[0182] (5) Price: the currency exchange rate applied when buying orselling a currency pair.

[0183] (6) Date/Time: the date and time of the transaction.

[0184] Clicking on the scroll buttons will cause the table to scroll upor down. Clicking on a column header will sort the table so that thecontents of the column are displayed in increasing or decreasing order.

[0185] Currency Rates

[0186] The Currency Rates Table (see FIG. 11) shows the current exchangerate for the currency pairs supported by the Trading System. They arepreferably updated in real time, approximately every 5 seconds. Whenthere is a significant exchange rate movement for a currency pair,up/down indicators show the direction of the rate change in order toalert a trader, should a trader not currently have the currency pairdisplayed in the graph.

[0187] Clicking on the scroll buttons will cause the table to scroll upor down. Clicking on a currency pair's ask price will pop up a buywindow for that currency pair. Clicking on a currency pair's bid pricewill pop up a sell window for that currency pair.

[0188] Graphs

[0189] Graphs (see FIG. 12) show how currency exchange rates change overa period of time, ranging from minutes to months. All graphs are updatedin real-time, as new currency rates arrive.

[0190] At any given time, the difference between the lower boundary andthe upper boundary of the curve represents the difference between thebid and the ask price, and the difference may vary over time dependingon market conditions. Thus, the top part of the curve indicates the askprice, and the bottom of the curve indicates the bid price.

[0191] As a mouse cursor 1220 is moved over the graph, a sub-area 1230in the graph shows precise exchange rate information for the targetcurrency pair corresponding to the time instance represented by theposition of the mouse cursor.

[0192] The graph may also display Buy or Sell widgets that indicate atwhich point in time a trader bought or sold a currency pair. Downwardpointing red arrows indicate a sold currency pair (where a trader ishoping the rates will go down after that point), and upward pointinggreen arrows indicate a bought currency pair (where a trader is hopingthe rates will go up after that point).

[0193] A trader can adjust what is shown in the graph: (1) The currencypair displayed is selected using the pull-down menu 1240 at the bottomleft. (2) The granularity of the graph is selected using the pull-downmenu 1250 at the bottom right of the graph. Selecting a finegranularity, such as 5 seconds (where each point on the horizontal axisrepresents 5 seconds of time), will display a relatively short timeinterval (less than an hour, in this case). Selecting a largergranularity, such as one day, will display longer-tern trends (9 monthsof exchange rate information in this case).

[0194] Scroll buttons 1260 at the top right of the graph area allow atrader to shift the time interval shown to the left or to the right(backward or forward in time). Clicking on the graph with the mouse willhide the Buy/Sell widgets. Clicking again will cause them to reappear.

[0195] Buy/Sell Window

[0196] A Buy/Sell pop-up window (see FIG. 13) allows a trader to issuebuy or sell orders. The window can be caused to pop up either by: (1)clicking on the Buy/Sell action button (see FIG. 5); (2) clicking on thebid or ask price in the Currency Rates Table (see FIG. 11); or (3)clicking on an existing trade, position, or order in the Table area ofthe Trading Station display (see FIG. 5).

[0197] Two types of orders are supported: (1) Market Orders are ordersthat are transacted immediately based on market exchange rates. (2)Entry Orders are orders that are executed when the exchange rate crossesa certain threshold.

[0198] The type of order can be selected by clicking on the appropriatetab in the Buy/Sell Window (see FIG. 13). Market order comes up as thedefault order.

[0199] Issuing a Market Order.

[0200] To issue a market order with the Buy/Sell Window and the MarketTab selected, a number of fields must be filled out (although most ofthe fields are pre-initialized with reasonable values):

[0201] (1) ACTION: choose between buy and sell.

[0202] (2) CURRENCY: choose the currency pair the trader wishes to buyor sell. By default, this field will be initialized as follows: (A) Ifthe Buy/Sell button was used to obtain the window, the currency paircurrently shown in the graph. (B) If the bid or ask price was clicked toobtain the window, the currency pair for which the price was clicked.(C) If a trade or position was clicked in the Table area, the currencypair corresponding to the trade or position. The pull-down menu can beused to select another currency pair.

[0203] (3) UNITS: the number of units of the currency pair the traderwishes to buy or sell, with units expressed in terms of the basecurrency.

[0204] (4) Lower Limit: the order will result in a trade only if a priceis obtained that does not lie below this limit. By default, no limit isselected, but one can be set by checking the check box. If the check boxis checked, then the field is automatically initialized with areasonable value; however the value can be changed either by modifyingthe number directly or by using the +/− buttons to increase or decreasethe value, respectively.

[0205] (5) Upper Limit: the order will result in a trade only if a priceis obtained that does not lie above this limit. By default, no limit isselected, but one can be set by checking the check box. If the check boxis checked, then the field is automatically initialized with areasonable value; however, the value can be changed either by modifyingthe number directly or by using the +/− buttons to increase or decreasethe value, respectively.

[0206] (6) Stop Loss: if the order results in a trade, then thestop-loss value given will be associated with the trade. By default, nostop-loss limit is selected, but one can be set by checking the checkbox. If the check box is checked, then the field is automaticallyinitialized with a reasonable value; however, the value can be changedeither by modifying the number directly or by using the +/− buttons toincrease or decrease the value, respectively.

[0207] (7) Take Profit: if the order results in a trade, then thestop-loss value given will be associated with the trade. By default, notake profit limit is selected, but one can be set by checking the checkbox. If the check box is checked, then the field is automaticallyinitialized with a reasonable value; however, the value can be changedeither by modifying the number directly or by using the +/− buttons toincrease or decrease the value, respectively.

[0208] The RATE field is set by the Trading Station and corresponds tothe most recent exchange rate for the selected currency pair.

[0209] To issue the order, a Submit button 1310 must be selected. If theorder is successful, and a trade occurs, then an acknowledgment window(see FIG. 14) pops up with a Ticket number that can be used for futurereference. Moreover, the Open Trades Table (see FIG. 7) will be updatedto reflect the new trade, as will the Open Positions Table (see FIG. 8)and the Transaction History Table (see FIG. 10).

[0210] Several issues are important to note:

[0211] (1) If an order is successful and a trade occurs, then theexchange rate obtained for the trade will correspond to the most currentexchange rate maintained at the Trading System servers and notnecessarily the rate displayed in the Buy/Sell window.

[0212] (2) An order without Lower and Upper Limits will always result ina trade.

[0213] (3) An order with both Lower and Upper Limits will result in atrade if and only if the exchange rate for the potential trade liesbetween the two limits.

[0214] Issuing an Entry Order.

[0215] To issue an entry order with the Buy/Sell Window and the EntryTab selected (see FIG. 15), a number of fields must be filled out(although most of the fields are pre-initialized with reasonablevalues):

[0216] (1) ACTION: choose between buy and sell.

[0217] (2) CURRENCY: choose the currency pair the trader wishes to buyor sell. By default, this field will be initialized as follows: (A) ifthe Buy/Sell button was used to obtain the window, the currency paircurrently shown in the graph; (B) if the bid or ask price was clicked toobtain the window, the currency pair for which the price was clicked.The pull-down menu can be used to select another currency pair.

[0218] (3) UNITS: the number of units of the currency pair the traderwishes to buy or sell, with units expressed in terms of the basecurrency.

[0219] (4) RATE: the order will result in a trade as soon as theexchange rate for the selected currency pair crosses the given value;that is, for buy orders, if the rate goes below this value, and for sellorders if the rate goes above the given value

[0220] (5) Duration: this value is used to limit the amount of time anoutstanding order will remain effective. By default, the order remainseffective indefinitely. However, the duration can be set to the end ofthe day or for an hour.

[0221] (6) Stop Loss: if the order results in a trade, then thestop-loss value given will be associated with the trade. By default, nostop-loss limit is selected, but one can be set by checking the checkbox. If the check box is checked, then the field is automaticallyinitialized with a reasonable value; however, the value can be changedeither by modifying the number directly or by using the +/− buttons toincrease or decrease the value, respectively.

[0222] (7) Take Profit: if the order results in a trade, then thestop-loss value given will be associated with the trade. By default, notake profit limit is selected, but one can be set by checking the checkbox. If the check box is checked, then the field is automaticallyinitialized with a reasonable value; however, the value can be changedeither by modifying the number directly or by using the +/− buttons toincrease or decrease the value, respectively.

[0223] To issue the order, a Submit button 1510 must be selected. Thisresults in an acknowledgment window (see FIG. 14) popping up with aTicket number that can be used for future reference. Moreover, the OpenOrders Table (see FIG. 9) will be updated to reflect the new order. Notethat a trader can modify the parameters of an open order (including therate representing the trade threshold, or the S/L and T/P) by clickingon the order in the Open Orders Table.

What is claimed is:
 1. A system for trading currencies over a computernetwork, comprising: (a) a server front-end; (b) a database; (c) atransaction server; (d) a rate server; and (e) a pricing engine.
 2. Asystem as in claim 1, further comprising an interest rate manager.
 3. Asystem as in claim 2, wherein said interest rate manager is operative tocalculate, pay out, and collect interest by the second.
 4. A system asin claim 2, wherein said interest rate manager is operative tocalculate, pay out, and collect interest on a tick-by-tick basis.
 5. Asystem as in claim 1, further comprising a trade manager.
 6. A system asin claim 5, wherein said trade manager comprises a stop-loss daemon that(a) continuously checks whether stop-loss orders should be executed and(b) if a stop-loss order should be executed, executes it through saidtransaction server.
 7. A system as in claim 5, wherein said trademanager comprises a take-profit daemon that (a) continuously checkswhether take-profit orders should be executed, and (b) if a take-profitorder should be executed, executes it through said transaction server.8. A system as in claim 5, wherein said trade manager comprises alimit-order daemon that (a) continuously checks whether limit ordersshould be executed, and (b) if a limit order should be executed,executes it through said transaction server.
 9. A system as in claim 1,further comprising a value at risk server.
 10. A system as in claim 1,further comprising a margin control manager.
 11. A system as in claim 1,further comprising a trading system monitor.
 12. A system as in claim 1,further comprising a hedging engine.
 13. A method of trading currencyover a computer network, comprising the steps of: (a) transmittingcurrency market information over a computer network to an end user; (b)receiving a currency trade order from said end user, wherein saidcurrency trade order comprises limits within which the currency tradewill be acceptable to said end user; (c) calculating a market exchangerate for said currency trade order; and (d) executing said order if saidmarket exchange rate is within said limits.
 14. A method as in claim 13,wherein said market information and said trade order are prefaced withhttp headers.
 15. A method of trading currency over a computer network,comprising the steps of: (a) transmitting currency market informationover a computer network to an end user; (b) receiving a currency tradeorder from said end user, wherein said currency trade order comprises athreshold exchange rate; (c) calculating a market exchange rate for saidcurrency trade order; and (d) executing said order (1) if said marketexchange rate is or becomes above said threshold exchange rate and saidorder is a sell order, and (2) if said market exchange rate is orbecomes below said threshold exchange rate and said order is a buyorder.
 16. A method as in claim 15, wherein said market information andsaid trade order are prefaced with http headers.
 17. A method of tradingcurrency over a computer network, comprising the steps of: (a) receivingcurrency market information over a computer network from a tradingsystem server; (b) transmitting a currency trade order to said tradingsystem server, wherein said currency trade order comprises limits withinwhich the currency trade will be acceptable; and (c) if a marketexchange rate is within said limits, receiving information from saidtrading system server indicating that said currency trade order has beenexecuted.
 18. A method as in claim 17, wherein said market informationand said trade order are prefaced with http headers.
 19. A method oftrading currency over a computer network, comprising the steps of: (a)receiving currency market information over a computer network from atrading system server; (b) transmitting a currency trade order to saidtrading system server, wherein said currency trade order comprises athreshold exchange rate; and (c) if (1) the applicable market exchangerate is or becomes above said threshold exchange rate and said order isa sell order, or (2) the applicable market exchange rate is or becomesbelow said threshold exchange rate and said order is a buy order,receiving information from said trading system server indicating thatsaid currency trade order has been executed.
 20. A method as in claim19, wherein said market information and said trade order are prefacedwith http headers.
 21. Software for currency trading over a computernetwork, comprising: (a) software for receiving data over a computernetwork from a trading system server; (b) software for displaying afirst graphical user interface display that: (i) displays continuouslyupdated currency exchange rates in real-time based on data received fromsaid trading system server; and (ii) displays a plurality of actionbuttons, including at least one buy/sell button; (c) software fordisplaying, in response to a user clicking said buy/sell action button,a buy/sell window display that: (i) comprises trade order parameterfields; and (ii) accepts trade order data entered into said fields by auser; and (d) software for transmitting said trade order data to saidtrading system server over said computer network.
 22. Software as inclaim 21, wherein said trade order parameter fields comprise fields forupper and lower limits on acceptable trade market exchange rates. 23.Software as in claim 21, wherein said trade order parameter fieldscomprise a field for a threshold market rate above or below which atrade should be executed.
 24. Software for currency trading over acomputer network, comprising: (a) a database management module; (b) atransaction server module; (c) a rate server and pricing engine module;and (d) a transaction server module.
 25. Software as in claim 24,further comprising a bank interface module.
 26. Software as in claim 24,further comprising a trade manager module.
 27. Software as in claim 24,further comprising a hedging engine module.
 28. Software as in claim 24,further comprising an interest rate manager module.
 29. Software as inclaim 28, wherein said interest rate manager module is operative tocalculate, pay out, and collect interest by the second.
 30. Software asin claim 28, wherein said interest rate manager module is operative tocalculate, pay out, and collect interest on a tick-by-tick basis.